//
//  ViewController.m
//  28-UIViewAnimation
//
//  Created by 曹曹 on 16/8/22.
//  Copyright © 2016年 曹曹. All rights reserved.
//

#import "ViewController.h"
#import "UIView+Frame.h"

@interface ViewController ()
@property (nonatomic, strong) UIView *animationView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.animationView = [[UIView alloc] initWithFrame:CGRectMake(0, self.view.gx_width / 2, 100, 100)];
    _animationView.backgroundColor = [UIColor redColor];
    [self.view addSubview:_animationView];
    // 1.UIView Animation
#pragma mark - 方法 UIViewAnimation
#if 0
    //  1>开始动画设置
    //  参数1:动画标识
    //  参数2:上下文(void * C指针, 空值使用NULL)
    [UIView beginAnimations:nil context:NULL];
    //  2>设置动画持续时间
    [UIView setAnimationDuration:3];
    /**
     typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
     UIViewAnimationCurveEaseInOut,         // 开始和结束时慢
     UIViewAnimationCurveEaseIn,            // 开始时慢
     UIViewAnimationCurveEaseOut,           // 结束时慢
     UIViewAnimationCurveLinear,            // 匀速
     };
     */
    //  3>设置动画加速度曲线, 如何进行动画
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    //  4>延迟动画
//    [UIView setAnimationDelay:10];
//    [UIView setAnimationStartDate:[NSDate dateWithTimeIntervalSinceNow:10]];
    //  5>忽略动画过程
//    [UIView setAnimationsEnabled:NO];
    //  >6重复次数
    [UIView setAnimationRepeatCount:2.5];
    //  7>设置自动往返动画, 一个来回算一次
//    [UIView setAnimationRepeatAutoreverses:YES];
    //  8>动画的改变
    _animationView.gx_width = self.view.gx_width;
    //  9>动画的代理, 不签订代理, 代理方法不会执行(默认没有代理)
    [UIView setAnimationDelegate:self];
    //  将要开始
    [UIView setAnimationWillStartSelector:@selector(animationWillStart:context:)];
    //  已经结束
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    //  >结束动画设置, 执行该动画
    [UIView commitAnimations];
#endif
#pragma mark - UIViewAnimationWithBlocks
    // 1.
    // 参数1: 持续时间
    // 参数2: 需要执行的动画效果
//    [UIView animateWithDuration:10 animations:^{
//        _animationView.gx_x = 100;
//        _animationView.gx_width = 200;
//        _animationView.gx_height = 200;
//    }];
    // 2.
    // 参数3: 动画完成后需要执行的操作
//    [UIView animateWithDuration:10 animations:^{
//        _animationView.gx_width = 300;
//    } completion:^(BOOL finished) {
//        NSLog(@"动画完成后需要执行的操作");
//    }];
    // 3.
    // 参数2: 延迟
    // 参数3: 选项枚举, 按位枚举 1 << 0 可以多选
    [UIView animateWithDuration:5 delay:0 options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse animations:^{
        _animationView.gx_x = 300;
    } completion:^(BOOL finished) {
        NSLog(@"动画完成后需要执行的操作");
    }];
}

- (void)animationWillStart:(NSString *)animationID context:(void *)context {
    NSLog(@"动画将要开始");
}

-(void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    NSLog(@"动画已经结束");
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end
